home *** CD-ROM | disk | FTP | other *** search
/ The Fatted Calf / The Fatted Calf.iso / Applications / Games / NeXTmj / Source / TileCountManager.cc < prev    next >
Text File  |  1991-03-17  |  1KB  |  105 lines

  1.  
  2. /*
  3.  *
  4.  $Author$
  5.  $Header$
  6.  *
  7.  $Log$
  8.  */
  9.  
  10.  
  11. #import    "TileCountManager.h"
  12.  
  13. extern "C" {
  14. #import    <assert.h>
  15. #import    <math.h>
  16. }
  17.  
  18.  
  19.                                                 // This is the number of digits that
  20.                                                 //    are to be maintained in the count view.
  21. #define    NUMBER_OF_DIGITS    3
  22.  
  23.  
  24. TileCountManager::TileCountManager( TileCountView* view ) {
  25.  
  26.  
  27.  
  28.     assert( view );
  29.     my_view = view;
  30.     [ my_view setNeedsDisplay:YES ];
  31.  
  32.     count_value = NUMBER_OF_TILES;
  33.     
  34. }
  35.  
  36.  
  37. void TileCountManager::updateView( void ) {
  38.  
  39.  
  40.     [[ my_view setNeedsDisplay:YES ] display ];
  41. }
  42.  
  43.  
  44. void TileCountManager::resetCount( void ) {
  45.  
  46.  
  47.     count_value = NUMBER_OF_TILES;
  48.     updateView();
  49. }
  50.  
  51.  
  52. void TileCountManager::addTwo( void ) {
  53.  
  54.     count_value += 2;
  55.     assert( count_value < NUMBER_OF_TILES );
  56.     updateView();
  57. }
  58.  
  59.  
  60. void TileCountManager::subtractTwo( void ) {
  61.  
  62.  
  63.     count_value -= 2;
  64.     assert( count_value >= 0 );
  65.     updateView();
  66. }
  67.  
  68.  
  69. int TileCountManager::count( void ) {
  70.  
  71.  
  72.     return count_value;
  73. }
  74.  
  75.  
  76. BOOL TileCountManager::isEmpty( void ) {
  77.  
  78.  
  79.     return count_value == 0;
  80. }
  81.  
  82.  
  83. void TileCountManager::drawImage( void ) {
  84.  
  85.  
  86.     NXRect    bounds;
  87.     int        tmp_value = count(),
  88.             i;
  89.             
  90.     
  91.     assert([ my_view isFocusView ]);
  92.     [ my_view    getBounds:&bounds ];
  93.     
  94.     for( i = 0; i < NUMBER_OF_DIGITS; ++i )  {
  95.         int        digit = tmp_value / ( int )pow( 10, ( NUMBER_OF_DIGITS - 1 - i ));
  96.         NXPoint    p = { 0, 0 };
  97.         
  98.         p.x = i * ( TILE_SIZE - TILE_SHIFT );
  99.         number_array[ digit ].drawImage( p );
  100.         
  101.         tmp_value -= digit * ( int )pow( 10, ( NUMBER_OF_DIGITS - 1 - i ));
  102.     }
  103. }
  104.  
  105.